PNAS | 使用语义距离测量一个人的创新力(发散思维)得分
传统测量 被试者创造力 存在耗费时间、主观性太强、缺乏客观性,且所得到的分值是不稳定的,无法跨时间、文化、群体进行分值比较。该研究分析了创新力的两大理论,即联系理论和执行理论,即创新力是包含思维的广度和深度两方面。
联系理论(广度)负责搜寻所有可能方案的集合,增加集合的规模,体现思维的广度。 执行理论(深度),负责寻找最佳方案,并将方案落实执行,体现思维的深度。
结合Glove词嵌入技术,将每个词理解为一个技术或知识,两词语语义越相似,发散性越低。
文中让被试按照一定规则,随意填写10个名词,使用其中7个有效词语测量被试的创新力(发散性)思维。可以简单的把7个词理解为知识或者技术,7个词语会形成21种词语对(组合)。最后求均值可以测量出被试词语对的语义距离体现创新发散性的强度。文末含案例代码
Olson, J.A., Nahas, J., Chmoulevitch, D., Cropper, S.J. and Webb, M.E., 2021. Naming unrelated words predicts creativity. Proceedings of the National Academy of Sciences, 118(25), p.e2022340118.
一、摘要
一些理论认为,有 创造力 的人能够产生更多 发散性 的想法。如果这是正确的,简单地让被试写 N 个不相关的单词,然后测量这N个词的语义距离, 作为 发散思维 的客观衡量标准。为了验证这一假设,我们要求 8,914 名参与者说出 10 个彼此尽可能不同的单词。
然后计算算法估计单词之间的平均语义距离;相关词(例如 cat 和 dog)比不相关词(例如 cat 和 thimble)的距离更短。我们预测,产生更大语义距离的人也会在传统的创造力测量中得分更高。
在研究 1 中,我们发现语义距离与两个广泛使用的创造力测量(替代用途任务和桥接关联差距任务)之间存在中度至强相关性。在研究 2 中,参与者来自 98 个国家,语义距离仅因基本人口变量而略有不同。在一系列已知可预测创造力的问题上,语义距离与表现之间也存在正相关关系。
总体而言, 语义距离 与已有的创造力测量方法 的相关性较高, 且该测量方法具有稳定性,可以跨地域、时代对不同群体的发散思维得分进行比较。
二、创新力理论
想出 3 个尽可能不同的词。根据两种主要的创造力理论 (1, 2),选择这些词依赖于产生 #远程联想 ,同时抑制 #常见联想 。
联想理论 (Associative Theory)认为,有创造力的人具有语义记忆结构,可以更容易地链接远程元素 (3-6)。
执行理论 (Executive Theory) 侧重于自上而下的注意力控制;创造性的解决方案来自于监测和抑制共同的联想 (2, 7)。
基于这些理论,我们假设 填写n个无关单词的任务 可以可靠地衡量 #语言创造力 。创造力有两个主要的心理成分, 收敛思维和发散思维,它们在产生创意输出时协同工作。收敛性思维任务衡量评估多种刺激并得出最适当响应的能力,例如问题的最佳解决方案 (3, 8-10)。这些任务往往更容易得分,因为只有一小部分正确答案。相比之下,发散思维任务通常使用开放式问题来衡量一个人产生各种解决方案的能力 (11-13)。它们通常需要更长的回答(文本),因此更难客观评分。
三、创新力测量
3.1 替代用途任务
最常见的发散思维测量方法是 替代用途任务 Alternative Uses Task (14, 15)。在该测量方法中,参与者生成常见物体的用途,例如回形针或鞋子。使用常用的评分方法 (16),评分者然后根据三个组成部分来判断回答:
灵活性,产生的不同用途类别的数量; 独创性,每次使用相对于样本的其余部分的稀有程度,这对创造力特别重要(17、18);和 流畅度,一共产生了多少次使用。
3.2 离散联系任务
本研究作者开发了 离散联系任务DAT (Divergent Association Task) 的网站, 填写你想到的10个不相关词语, 创造力越丰富的人,填写的词语语义距离往往会更远。
这是pnas作者开发的网站 https://www.datcreativity.com/ ,大家可以前去测试。
被试填写10个单词的规则
只能填写英文单词 只能是名词(如事情、物体、概念) 不能填 专有名词(例如,特定的人或地点) 不能填写 专业词(比如技术词) 自己思考这些词,不要只看周围环境的物体。
DAT实现
使用Glove预训练模型 一共10个词,选前7个作为有效词, 词对共有 21个词对(组合) 对21词语组合, 分别计算词向量的余弦距离,分别乘以100, 最终求均值得到被试的DAT得分。
下图是大邓第二次填写得到的DAT得分,第一次只超过了6%的人,这方法第一次准,再测就知道如何提高DAT得分。
DAT得分范围0-200, 得分为0可能是7个有效词之间语义相同,而得分200可能是有效词之间彼此语义完全不相同。实践中,得分大多处于65~90之间,且很少超过100。
词嵌入技术可以把每个词转化为等长的向量,而不同词语共处于相同的语义空间中。常见的词嵌入技术有word2vec、Glove、flastText等,因为最近有学者在 替代用途任务(Alternative Uses Task)中用过Glove算法,本文采用Glove算法。本研究使用的Glove预训练模型来自Common Crawl Corpus项目,该项目拥有数十亿网页文本数据。
为了提供冗余, 只采用 被试者 填写的前7个词作为有效单词(DAT的被试需要填写10个词)。DAT得分是这些词之间的语义距离的平均值,具体计算方法, 7个词两两相关的组合有 42种组合, 选择其中最有可能的 21 个语义组合。
四、实验
这种发散思维的操作化是基于创造力的联想和执行控制理论。更高的分数将显示出更大的能力来利用更远程的关联 (3-5) 或抑制过度相关的关联 (2, 7)。
在研究 1 中,发现 DAT 与其他创造力测量方法存在极高的相关性。
在研究 2 中,DAT得分如何随人口统计而变化,以及它们是否与更大数据集中与发散性思维相关的其他测量值相关 (9, 37)。语义距离是否可以作为发散思维的可靠指标。
五、讨论
研究结果表面, 让被试简单的填写10个不想管单词的任务可以作为 测量发散思维 的可靠衡量标准。在研究中, 将这项任务的表现与已有的两种创造力量表做了比较,具有很高的相关性。
总体而言支持了语义发散性,尽管这种联系背后的确切机制尚不清楚,但在创新力最主要的两个理论,即联想理论或执行理论 的联系网络中衡量网络的范围或效率。
DAT算法表现稳定,方差不随人口统计特征变化出现显著性变化(研究2),可以在跨年龄、跨性别的情况下应用。
5.1 DAT的优点
操作简单,快捷,客观,节约了大量的人力时间,又能保证客观性。 得分绝对,可比较,可以用于测量不同群体(种族、文化、性别、年龄)的创造力得分。 对被试友好,一般一两分钟即可完成。
5.2 DAT的不足
创造力有发散性和执行力,发散性负责搜选所有方案集合的规模,而执行力是从方案集中选出最优方案并将其执行。DAT测量的仅仅是发散性思维。 被试可能通过填写稀奇的词语提高DAT得分。 只有短短几分钟,被试可能很难短时间内了解实验规则。
5.3 未来展望
DAT得分取决于Glove模型、语料库(数据集), 更新词模型或语料库,被试的DAT得分会发生变化。为简单起见,本研究使用免费的预训练模型, 通过一些努力,未来研究者可以对不同时期,不同国家的语料库来训练Glove模型。随着特定单词关联或多或少的联系, 更新的模型将会自动考虑这些变化,这将允许DAT得分跨越文化跨越时代,进行创新力的比较。
代码
这里粘贴PNAS公开的源代码,但坏消息是代码不能运行。好消息是经过大邓整理,现在DAT代码可以运行,不过需要你的支持。转发本文至朋友圈集赞30+,加微信372335839,备注【姓名-学校-专业】,即可获得本文完整的讲解、数据、可运行的代码
"""Compute score for Divergent Association Task,
a quick and simple measure of creativity
(Copyright 2021 Jay Olson; see LICENSE)"""
import dat
# 从 https://nlp.stanford.edu/projects/glove/ 下载Glove模型
model = dat.Model("glove.840B.300d.txt", "words.txt")
# 验证词语,如输入的是词组,代码会将其转为连线形式的单词
print(model.validate("cul de sac")) #
Run
cul-de-sac
计算两个词语之间的语义距离
print(model.distance("cat", "dog"))
print(model.distance("cat", "thimble"))
Run
0.1983
0.8787
计算词对的DAT得分(语义cosine距离*100
)
print(model.dat(["cat", "dog"], 2))
print(model.dat(["cat", "thimble"], 2))
Run
19.83
87.87
假设有三个人分别都填写10个词,选其前7个词作为有效词。有效词如下,
low = ["arm", "eyes", "feet", "hand", "head", "leg", "body"]
average = ["bag", "bee", "burger", "feast", "office", "shoes", "tree"]
high = ["hippo", "jumper", "machinery", "prickle", "tickets", "tomato", "violin"]
print(model.dat(low))
print(model.dat(average))
print(model.dat(high))
Run
50
78
95
课程(待)更新
课程 支持开票 | Python实证指标构建与文本分析【计划词嵌入与认知计算】部分之前的章节设计为
1. 词嵌入原理及应用概述
2. 案例: 豆瓣影评-训练词向量&使用词向量
3. 案例: 使用词向量做话题建模
4. 案例: 认知指标(态度、偏见)的测量
5. 总结-文本分析在社科(经管)领域中的应用
为降低学习认知难度,保证知识点之间的连贯性, 计划未来一周内将课程逐步调整为
1. 如何理解词嵌入
2. 词嵌入两大算法(Glove、Word2Vec)对比及特点
3. 训练自己的Glove模型文件
4. 训练自己的Word2vec模型文件
5. 如何使用公开模型文件
6. 案例: 豆瓣影评-训练词向量&使用词向量
7. 案例: 认知指标(态度、偏见)的测量
7. 案例: 跨群体认知比较(模型对齐)
8. 案例: 语义揭示你的创新力(发散思维)得分
9. 案例: 文化演变
10. 词嵌入在社科(经管)中的应用潜力
11. 课程总结-文本分析在社科(经管)领域中的应用
关于本文创新力(发散思维)在文本语义上的原理、思维、技术实现,可观看1、2、5、8章节。
精选文章
27G数据集 | 使用Python对27G招股说明书进行文本分析
安装python包出现报错:Microsoft Visual 14.0 or greater is required. 怎么办?